<?php
declare (strict_types = 1);

namespace app\api\controller;

use app\api\model\Pic;
use app\api\model\Top;
use app\Request;
use OSS\Core\OssException;
use OSS\OssClient;

class Index
{
    public function index()
    {

    }

    public function pics(){
        $data = Pic::select()->toArray();
        return  json(['code'=>200,'data'=>$data]);
    }

    public function Oss($file){
        // 阿里云主账号AccessKey拥有所有API的访问权限，风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维，请登录RAM控制台创建RAM账号。
        $accessKeyId = "LTAI4G3N1S4pMrVNx77dSA7v";
        $accessKeySecret = "w2WPCRxM1xnL7q9XZDyd9zGM3w1nKf";
// Endpoint以杭州为例，其它Region请按实际情况填写。
        $endpoint = "http://oss-cn-shanghai.aliyuncs.com";
// 设置存储空间名称。
        $bucket= "bliuce";
// 设置文件名称。
        $object = time().".jpg";
// <yourLocalFile>由本地文件路径加文件名包括后缀组成，例如/users/local/myfile.txt。
        $filePath = $file;

        try{
            $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);

            $ossClient->uploadFile($bucket, $object, $filePath);
        } catch(OssException $e) {
            printf(__FUNCTION__ . ": FAILED\n");
            printf($e->getMessage() . "\n");
            return;
        }
        $res = $this->getUrl($object);
        return $res;
    }

    public function getUrl($obj){
        // 阿里云主账号AccessKey拥有所有API的访问权限，风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维，请登录RAM控制台创建RAM账号。
        $accessKeyId = "LTAI4G3N1S4pMrVNx77dSA7v";
        $accessKeySecret = "w2WPCRxM1xnL7q9XZDyd9zGM3w1nKf";
// Endpoint以杭州为例，其它Region请按实际情况填写。
        $endpoint = "https://oss-cn-shanghai.aliyuncs.com";
        $bucket= "bliuce";
        $object = $obj;

        $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);

// 生成一个带图片处理参数的签名的URL，有效期是3600秒，可以直接使用浏览器访问。
        $timeout = 3600;
        $options = array(
            OssClient::OSS_PROCESS => "image/resize,m_lfit,h_100,w_100" );
        $signedUrl = $ossClient->signUrl($bucket, $object, $timeout, "GET", $options);

       return ['code'=>200,'url'=>$signedUrl];
    }

    public function upload(Request $request){
        $filepath = $request->file('file')->getPathname();
        $res = $this->Oss($filepath);
        return json($res);
    }

    public function be(Request $request){
        $params = $request->param();
        Top::create($params);
        \app\api\model\User::where('id', $params['uid'])
            ->inc('post')
            ->update();
        return json(['code'=>200,'msg'=>'上报成功']);
    }
}
